# !/usr/bin/env python
# coding=utf-8
# @Time    : 2017/12/26 10:23
# @Author  : 6imensiva
# @Site    : https://gitee.com/dimensiva/wx_server_prototype.git
# @File    : my_json.py
# @Software: PyCharm
# @Version: 3.5.4
import json


def json_load_byteified(file_handle):
    return _byteify(
        json.load(file_handle, object_hook=_byteify),
        ignore_dicts=True
    )


def loads(json_text):
	"""
	解决json.loads后str变成unicode的问题

	:param json_text:
	:return:
	"""
	return _byteify(
        json.loads(json_text, object_hook=_byteify),
        ignore_dicts=True
    )


def _byteify(data, ignore_dicts=False):
    # if this is a unicode string, return its string representation
    if isinstance(data, str):
        return data.encode('utf-8')
    # if this is a list of values, return list of byteified values
    if isinstance(data, list):
        return [_byteify(item, ignore_dicts=True) for item in data ]
    # if this is a dictionary, return dictionary of byteified keys and values
    # but only if we haven't already byteified it
    if isinstance(data, dict) and not ignore_dicts:
        return {
            _byteify(key, ignore_dicts=True): _byteify(value, ignore_dicts=True)
            for key, value in data.items()
        }
    # if it's anything else, return it in its original form
    return data


if __name__ == '__main__':
	aaa = '{"licenseNo":"川A989BY","Name":"严笑"}'
	bbb = loads(aaa)
	print(bbb, type(bbb['Name']), bbb['Name'])

